home *** CD-ROM | disk | FTP | other *** search
/ Micom Basic 1995 August / CD [BM9508].bin / basic / bp_kouza / f_basic / list3.bas < prev    next >
Encoding:
BASIC Source File  |  1995-06-09  |  8.7 KB  |  226 lines

  1. 1000 SCREEN@ 0
  2. 1010 CONSOLE 0,25,0
  3. 1020 WIDTH 80,25
  4. 1030 CLS 0
  5. 1040 DIM BX(2,3),BY(2,3),BL(2,3),BR(2,3)          'ö╜Ä╦ö┬é╠ì└òWüCÆ╖é│üCîXé½èpôx
  6. 1050 DIM X(3),Y(3)                                        'ö╜Ä╦ö┬ò\Īùpözù±ò╧Éö
  7. 1060 DIM NN(2,3)                                    'âtâBü[âïâhé╔ë₧é╢é╜î⌡é╠æ¼ôx
  8. 1070 FOR STAGE = 0 TO 2                               'ö╜Ä╦ö┬özÆuâfü[â^ô╟é▌é╛é╡
  9. 1080  FOR I = 0 TO 3
  10. 1090   READ BX(STAGE,I),BY(STAGE,I)
  11. 1100   READ BL(STAGE,I),BR(STAGE,I)
  12. 1110  NEXT
  13. 1120 NEXT
  14. 1130 FOR STAGE = 0 TO 2                                       'î⌡é╠æ¼ôxô╟é▌é╛é╡
  15. 1140  FOR I = 0 TO 3
  16. 1150   READ NN(STAGE,I)
  17. 1160  NEXT
  18. 1170 NEXT
  19. 1180 WHILE -1                                                       'û│î└âïü[âv
  20. 1190  SCORE = 0
  21. 1200  STAGE = 0
  22. 1210  WHILE STAGE < 3                                            '3âXâeü[âWé▄é┼
  23. 1220   GOSUB *PUTSTAGE                                            'âXâeü[âWò\Ī
  24. 1230   GOSUB *RINPUT                                                'î⌡èpôxôⁿù═
  25. 1240   GOSUB *PLOT                                            'î⌡é╠ïOÉ╒é≡é╜é╟éΘ
  26. 1250   IF LF = 0 THEN GOSUB *SCOREUP ELSE STAGE = 3  'é╜é╟éΦé½éΩé╚éóé╞GAME OVER
  27. 1260  WEND
  28. 1270  GOSUB *GAMEOVER                                     'âQü[âÇüEâIü[âoü[ò\Ī
  29. 1280 WEND
  30. 1290 *PUTSTAGE                                                    'âXâeü[âWò\Ī
  31. 1300 CLS 0
  32. 1310 PRINT "ö╜Ä╦ïⁿÉ▄é╦éτéóîéé┐âQü[âÇ"
  33. 1320 LOCATE 55,0
  34. 1330 PRINT USING "Stage #";STAGE + 1
  35. 1340 GOSUB *PUTSCORE                                                'âXâRâAò\Ī
  36. 1350 FOR I = 0 TO 3
  37. 1360  LINE(I*160,16)-(I*160+159,399),PSET,1-(I AND 1),BF
  38. 1370 NEXT
  39. 1380 LINE(0,16)-(639,399),PSET,7,B
  40. 1390 FOR I = 0 TO 3                                           'ö╜Ä╦ö┬ò\Īâïü[âv
  41. 1400  X(0) = - BL(STAGE,I) / 2                      'ö╜Ä╦ö┬é≡é▄é╕î┤ô_ÆåÉSé╔Æué¡
  42. 1410  Y(0) = -2
  43. 1420  X(1) = BL(STAGE,I) / 2
  44. 1430  Y(1) = -2
  45. 1440  X(2) = BL(STAGE,I) / 2
  46. 1450  Y(2) = 2
  47. 1460  X(3) = - BL(STAGE,I) / 2
  48. 1470  Y(3) = 2
  49. 1480  R = BR(STAGE,I)
  50. 1490  FOR J = 0 TO 3                                          'Æ╕ô_é≡ë±ô]é│é╣éΘ
  51. 1500   X = X(J)
  52. 1510   Y = Y(J)
  53. 1520   GOSUB *ROTATE                                        'ë±ô]âTâuüEâïü[â`âô
  54. 1530   X(J) = X + BX(STAGE,I)                                         'ò╜ìsê┌ô«
  55. 1540   Y(J) = Y + BY(STAGE,I)
  56. 1550  NEXT
  57. 1560  FOR J = 0 TO 2                                                'Æ╕ô_é≡îïé╘
  58. 1570   LINE( X(J),Y(J) ) - ( X(J+1),Y(J+1) ) ,PSET, I + 2
  59. 1580  NEXT
  60. 1590  LINE( X(3),Y(3) ) - ( X(0),Y(0) ) ,PSET, I + 2
  61. 1600  PAINT ( BX(STAGE,I) , BY(STAGE,I) ) , I + 2
  62. 1610 NEXT
  63. 1620 CIRCLE ( 10 , 200 ) , 10 , 6                               'â^ü[âQâbâgò\Ī
  64. 1630 PAINT ( 10 , 200 ) , 6 , 6
  65. 1640 RETURN
  66. 1650 *ROTATE
  67. 1660 RA = R * 3.1416! / 180                                        'ôxü¿âëâWâAâô
  68. 1670 ROTATEX = X * COS ( RA ) - Y * SIN ( RA )                            'ë±ô]
  69. 1680 ROTATEY = X * SIN ( RA ) + Y * COS ( RA )
  70. 1690 X = ROTATEX
  71. 1700 Y = ROTATEY
  72. 1710 RETURN
  73. 1720 *PUTSCORE                                                      'âXâRâAò\Ī
  74. 1730 LOCATE 65,0
  75. 1740 PRINT USING "SCORE #####";SCORE
  76. 1750 RETURN
  77. 1760 *RINPUT
  78. 1770 F = 0                                              'ôⁿù═Æåé⌐é╟éñé⌐é╠âtâëâO
  79. 1780 LR = 0
  80. 1790 WHILE F = 0
  81. 1800  C = 6                                             'ò√îⁿé≡Īé╖âëâCâôé≡ò\Ī
  82. 1810  GOSUB *PUTLINE
  83. 1820  K$ = ""
  84. 1830  WHILE K$ = ""
  85. 1840   K$ = INKEY$
  86. 1850   IF K$ = "8" THEN C = 0 : GOSUB *PUTLINE : LR = LR + 2.5! : IF LR > 90 THEN LR = 90 '8âLü[é┼ëEò√îⁿé╓èpôxé≡ò╧éªéΘ
  87. 1860   IF K$ = "2" THEN C = 0 : GOSUB *PUTLINE : LR = LR - 2.5! : IF LR < -90 THEN LR = -90 '2âLü[é┼ì╢ò√îⁿé╓èpôxé≡ò╧éªéΘ
  88. 1870   IF K$ = " " THEN F = 1                         'âXâyü[âXüEâLü[é┼ôⁿù═ÅIù╣
  89. 1880  WEND
  90. 1890  C = 6
  91. 1900  GOSUB *PUTLINE
  92. 1910 WEND
  93. 1920 C = 0
  94. 1930 GOSUB *PUTLINE                                     'ò√îⁿé≡Īé╖âëâCâôé≡Å┴é╖
  95. 1940 LINE ( 0,16 ) - ( 639,399 ) ,PSET, 7 , B
  96. 1950 RETURN
  97. 1960 *PUTLINE                                     'èpôxé╔ë₧é╢é─âëâCâôé≡ò\Īé╖éΘ
  98. 1970 LINE ( 638,200 ) - ( 638 - 40 * COS ( LR * 3.1416! / 180 ) , 200 - 40 * SIN ( LR * 3.1416! / 180 ) ) ,PSET, C
  99. 1980 RETURN
  100. 1990 *PLOT
  101. 2000 LX = 638                                                     'Åëè·ì└òWÉ▌ÆΦ
  102. 2010 LY = 200
  103. 2020 OLDC = 0
  104. 2030 LL = 10000                                               'ô₧ÆBïùùúâèâ~âbâg
  105. 2040 LF = 1
  106. 2050 BANC = 0
  107. 2060 KUC = 0
  108. 2070 MENC = 0
  109. 2080 WHILE LL > 0 AND LF = 1
  110. 2090  NLX = LX - .7! * COS ( LR * 3.1416! / 180 )         'èpôxé╔ë₧é╢é─ì└òWé≡ò╧ìX
  111. 2100  NLY = LY - .7! * SIN ( LR * 3.1416! / 180 )
  112. 2110  IF INT ( NLX ) <> INT ( LX ) OR INT ( NLY ) <> INT ( LY ) THEN GOSUB *CHECK 'âOâëâtâBâbâNëµû╩Åπé┼é╠ì└òWé¬ò╧ë╗é╡é╜éτÅ╒ô╦â`âFâbâN
  113. 2120  LX = NLX                                                      'ì└òWé≡ìXÉV
  114. 2130  LY = NLY
  115. 2140  PSET ( INT ( LX ) , INT ( LY ) ) , 6                          'ïOÉ╒é≡ò`é¡
  116. 2150  LL = LL - 1                                         'ô₧ÆBïùùúâJâEâôâ^ò╧ìX
  117. 2160 WEND
  118. 2170 RETURN
  119. 2180 *BACK                                      'ö╜Ä╦îπé╠ÉVé╜é╚ò√îⁿé╓ì└òWé≡ò╧ìX
  120. 2190 NLX = LX - .7! * COS ( LR * 3.1416! / 180 )
  121. 2200 NLY = LY - .7! * SIN ( LR * 3.1416! / 180 )
  122. 2210 RETURN
  123. 2220 *CHECK                                                       'Å╒ô╦â`âFâbâN
  124. 2230 IF BANC > 0 THEN  BANC = BANC - 1
  125. 2240 IF KUC > 0 THEN KUC = KUC - 1
  126. 2250 IF MENC > 0 THEN MENC = MENC - 1
  127. 2260 GET@A(INT(NLX),INT(NLY))-(INT(NLX),INT(NLY)),Z%:C=Z%(0)-8:IF C<0 THEN C=0
  128. 2270 IF C = 7 AND KABEC = 0 THEN GOSUB *KABEHANSYA : GOSUB *BACK        'öÆé═ÿg
  129. 2280 IF C = 6 THEN GOSUB *TARGET                'ë⌐ÉFé═â^ü[âQâbâgé╠ë┬ö\ɽé¬éáéΘ
  130. 2290 IF C > 1 AND C < 6 AND BANC = 0 THEN GOSUB *BLOCKHANSYA : GOSUB *BACK : BANC = 10 'ìòüCÉ┬ê╚èOé═ö╜Ä╦ö┬ö╜Ä╦
  131. 2300 IF INT ( NLX ) = 160 OR INT ( NLX ) = 320 OR INT ( NLX ) = 480 THEN GOSUB *KUSSETSU : GOSUB *BACK : KUC = 50
  132. 2310 RETURN
  133. 2320 *KUSSETSU
  134. 2330 KP = INT( ( NLX - 50 ) / 160 )     'ïⁿÉ▄é╡é╜ÅΩÅèé╔æ╬ë₧é╖éΘî⌡é╠æ¼ôxé≡ïüé▀éΘ
  135. 2340 LR = ( LR + 360 ) MOD 360
  136. 2350 IF LR < 90 OR LR > 270 THEN GOSUB *R2L ELSE GOSUB *L2R
  137. 2360 RETURN
  138. 2370 *R2L
  139. 2380 NA = NN(STAGE,KP+1)
  140. 2390 NB = NN(STAGE,KP)
  141. 2400 R = NB / NA * SIN ( LR / 180 * 3.1416! )
  142. 2410 IF ABS(R) >= 1 THEN GOSUB *MENHANSYA1 : RETURN
  143. 2420 LR = ATN ( R / SQR ( - R * R + 1 ) )                   'ïⁿÉ▄îπé╠èpôxé≡îvÄZ
  144. 2430 LR = LR * 180 / 3.1416!
  145. 2440 RETURN
  146. 2450 *L2R
  147. 2460 NA = NN(STAGE,KP)
  148. 2470 NB = NN(STAGE,KP+1)
  149. 2480 R = ( 180 - LR ) * 3.1416! / 180
  150. 2490 R = NB / NA * SIN ( R )
  151. 2500 IF ABS(R) >= 1 THEN GOSUB *MENHANSYA2 : RETURN
  152. 2510 NR = ATN ( R / SQR ( - R * R + 1 ) )
  153. 2520 LR = 180 - NR * 180 / 3.1416!
  154. 2530 RETURN
  155. 2540 *MENHANSYA1
  156. 2550 IF MENC > 0 THEN RETURN
  157. 2560 MENC = 20
  158. 2570 LR = 180 - LR
  159. 2580 RETURN
  160. 2590 *MENHANSYA2
  161. 2600 IF MENC > 0 THEN RETURN
  162. 2610 MENC = 20
  163. 2620 LR = 360 + 180 - LR
  164. 2630 RETURN
  165. 2640 *KABEHANSYA
  166. 2650 BEEP 1
  167. 2660 IF INT ( NLX ) = 0 THEN LR = - LR + 180  'ò╟é╓é╠Éiôⁿò√îⁿé╔ë₧é╢é─ö╜Ä╦èpîvÄZ
  168. 2670 IF INT ( NLY ) = 16 THEN LR = - LR + 360
  169. 2680 IF INT ( NLX ) = 639 THEN LR = 180 - LR
  170. 2690 IF INT ( NLY ) = 399 THEN LR = 360 - LR
  171. 2700 LR = LR MOD 360
  172. 2710 BEEP 0
  173. 2720 RETURN
  174. 2730 *BLOCKHANSYA
  175. 2740 BEEP 1
  176. 2750 LR = 2 * BR( STAGE , C - 2 ) - LR            'ö╜Ä╦ö┬é╠èpôxé⌐éτö╜Ä╦èpé≡îvÄZ
  177. 2760 LR = ( LR + 360 ) MOD 360
  178. 2770 BEEP 0
  179. 2780 RETURN
  180. 2790 *TARGET
  181. 2800 IF SQR ( ( INT ( NLX ) - 10 ) ^ 2 + ( INT ( NLY ) - 200 ) ^ 2 ) < 10 THEN LF = 0 'â^ü[âQâbâgé⌐éτé╠Æ╝Éⁿïùùúé≡Æ▓é╫éΘ
  182. 2810 RETURN
  183. 2820 *SCOREUP                                                 'â^ü[âQâbâgé╔û╜Æå
  184. 2830 BEEP 1
  185. 2840 CIRCLE ( 10 , 200 ) , 10 , 2                         'â^ü[âQâbâgé≡É╘é¡ôhéΘ
  186. 2850 PAINT ( 10 , 200 ) , 2 , 2
  187. 2860 LOCATE 29,13
  188. 2870 PRINT "éréöéüéçéà  ébéîéàéüéÆ"
  189. 2880 BEEP 0
  190. 2890 SCORE = SCORE + LL                               'æ¼é¡û╜Æåé│é╣é╜ò√é¬ìéô╛ô_
  191. 2900 GOSUB *PUTSCORE
  192. 2910 WHILE INKEY$ = ""                                  'âLü[é¬ëƒé│éΩéΘé▄é┼æ╥é┬
  193. 2920 WEND
  194. 2930 STAGE = STAGE + 1                                        'é┬é¼é╠âXâeü[âWé╓
  195. 2940 IF STAGE > 2 THEN F = 1                  'æSòöâNâèâAé╡é╜éτâQü[âÇüEâIü[âoü[
  196. 2950 RETURN
  197. 2960 *GAMEOVER                                            'âQü[âÇüEâIü[âoü[ò\Ī
  198. 2970 LOCATE 29,13
  199. 2980 PRINT "  éféüéìéà  énéûéàéÆ  "
  200. 2990 FOR I = 0 TO 999
  201. 3000  BEEP 1
  202. 3010  BEEP 0
  203. 3020 NEXT
  204. 3030 WHILE INKEY$ = ""                                  'âLü[é¬ëƒé│éΩéΘé▄é┼æ╥é┬
  205. 3040 WEND
  206. 3050 RETURN
  207. 3060 'ö╜Ä╦ö┬é╠ì└òWüCÆ╖é│üCèpôxé╠âfü[â^üi4ûçò¬ü~5âXâeü[âWüj
  208. 3070 DATA 450,280,200,150
  209. 3080 DATA 100,100,100,135
  210. 3090 DATA 200,280,250,65
  211. 3100 DATA 430,120,200,85
  212. 3110 '
  213. 3120 DATA 150,150,100,160
  214. 3130 DATA 450,350,150,10
  215. 3140 DATA 350,200,200,45
  216. 3150 DATA 50,350,100,20
  217. 3160 '
  218. 3170 DATA 120,320,150,130
  219. 3180 DATA 280,200,200,70
  220. 3190 DATA 450,350,200,170
  221. 3200 DATA 430,100,150,120
  222. 3210 'âtâBü[âïâhé╠î⌡é╠æ¼ôx
  223. 3220 DATA 0.4,1,0.95,1
  224. 3230 DATA 0.5,1,0.9,1
  225. 3240 DATA 0.6,1,0.8,1
  226.